#define _GNU_SOURCE
#include "app_pool.h"
#include "log/log.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int task_func(void *arg)
{
    char *data = (char *)arg;
    log_debug("任务函数在分线程(%d)执行处理, data=%s\n", gettid(), data);
}

int main(int argc, char *argv[])
{
    log_debug("main线程(%d)执行", gettid());
    //初始化线程池
    //参数 5 表示线程池中最多同时运行 5 个线程
    app_pool_init(5);

    //向线程池注册任务
    // 注册多个任务
    //如果线程池只有 5 个线程而提交了 10 个任务，线程池会排队执行任务，直到所有任务都完成。
    for (int i = 0; i < 10; i++)
    {
    char *data = malloc(10);
    sprintf(data, "abc_%d", i);
    app_pool_registerTask(task_func, data);
    }

    // 为了让线程池执行完所有任务
    sleep(1);

    // 关闭线程池
    app_pool_destroy();
    
    return 0;
}